package org.example.domain.strategy.service.rule.chain;

import lombok.extern.slf4j.Slf4j;

/**
 * 抽象类实现接口
 * 对于未实现的接口方法（logic），抽象类会将其自动转为 “抽象方法”，无需显式用 abstract 声明
 * 但要求所有非抽象的子类必须实现这些方法。
 */
@Slf4j
public abstract class AbstractLogicChain implements ILogicChain{

    private ILogicChain next;

    @Override
    public ILogicChain next() {
        return next;
    }

    @Override
    public ILogicChain appendNext(ILogicChain next) {
        //this.next-当前类中next属性，存才一个节点
        // appendNext就是给这个next赋值
        this.next = next;
        return next;
    }

    protected abstract String ruleModel();

}

